package documentadorrepositorio.apresentacao;

import documentadorrepositorio.componentes.PainelConfigArtefatoPresenter;
import documentadorrepositorio.descritoresArtefatos.DescritorArtefato;
import documentadorrepositorio.descritoresArtefatos.DescritorUtil;
import documentadorrepositorio.interfaceGrafica.ConfiguracaoIG;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author André
 */
public class ConfiguracaoApresentacao {

    private ConfiguracaoIG frame;
    private ArrayList<PainelConfigArtefatoPresenter> paineis = new ArrayList<>();

    public ConfiguracaoApresentacao() {
        try {
            this.frame = new ConfiguracaoIG(null, true);
            adicionaListeners();
            carregaDados();
            this.frame.setVisible(true);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private void adicionaListeners() {
        frame.getBtnSalvar().addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                btnSalvar_Click();
            }
        });

        frame.getBtnCancelar().addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                btnCancelar_Click();
            }
        });

    }

    private void btnSalvar_Click() {
        try {
            for (PainelConfigArtefatoPresenter painel : paineis) {
                painel.salvar();
            }
            DescritorUtil.reload();
            JOptionPane.showMessageDialog(frame, "Alterações salvas com sucesso.");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private void btnCancelar_Click() {
        this.frame.dispose();
    }

    private void carregaDados() throws Exception {
        for (DescritorArtefato descritorArtefato : DescritorUtil.obtemDescritores()) {
            PainelConfigArtefatoPresenter p = new PainelConfigArtefatoPresenter(descritorArtefato);
            frame.getTabPainel().add(descritorArtefato.obtemTipoArtefato(), p.getPainel());
            paineis.add(p);
        }
    }
}
